﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace LoveEat.MODEL.WeChat
{
    [Serializable]
    [DataContract]
    public class WechatEventHistory
    {
        #region 默认属性
        /// <summary>
        /// EventId
        /// </summary>
        [DataMember(Name = "EventId")]
        [Display(Name = "EventId")]
        public int EventId { get; set; }
        /// <summary>
        /// WechatInfoId
        /// </summary>		
        [DataMember(Name = "WechatInfoId")]
        [Display(Name = "WechatInfoId")]
        public int WechatInfoId { get; set; }
        /// <summary>
        /// 开发者微信号
        /// </summary>		
        [DataMember(Name = "ToUserName")]
        [Display(Name = "ToUserName")]
        public string ToUserName { get; set; }
        /// <summary>
        /// 发送方帐号（一个OpenID）
        /// </summary>		
        [DataMember(Name = "FromUserName")]
        [Display(Name = "FromUserName")]
        public string FromUserName { get; set; }
        /// <summary>
        /// 消息类型，event
        /// </summary>		
        [DataMember(Name = "MsgType")]
        [Display(Name = "消息类型，event")]
        public string MsgType { get; set; }
        /// <summary>
        /// 事件类型
        /// </summary>		
        [DataMember(Name = "Event")]
        [Display(Name = "事件类型")]
        public string Event { get; set; }
        /// <summary>
        /// 事件内容
        /// </summary>		
        [DataMember(Name = "EventContent")]
        [Display(Name = "事件内容")]
        public string EventContent { get; set; }
        /// <summary>
        /// 消息创建时间 （整型）
        /// </summary>		
        [DataMember(Name = "CreateTime")]
        [Display(Name = "消息创建时间 （整型）")]
        public int CreateTime { get; set; }
        /// <summary>
        /// 本地接收时间
        /// </summary>		
        [DataMember(Name = "ReceiveTime")]
        [Display(Name = "本地接收时间")]
        public DateTime ReceiveTime { get; set; }
        /// <summary>
        /// 事件KEY值
        /// </summary>		
        [DataMember(Name = "EventKey")]
        [Display(Name = "事件KEY值")]
        public string EventKey { get; set; }
        /// <summary>
        /// 二维码的ticket，可用来换取二维码图片
        /// </summary>		
        [DataMember(Name = "Ticket")]
        [Display(Name = "二维码的ticket，可用来换取二维码图片")]
        public string Ticket { get; set; }
        /// <summary>
        /// 地理位置纬度
        /// </summary>		
        [DataMember(Name = "Latitude")]
        [Display(Name = "地理位置纬度")]
        public string Latitude { get; set; }
        /// <summary>
        /// 地理位置经度
        /// </summary>		
        [DataMember(Name = "Longitude")]
        [Display(Name = "地理位置经度")]
        public string Longitude { get; set; }
        /// <summary>
        /// 地理位置精度
        /// </summary>		
        [DataMember(Name = "Precision")]
        [Display(Name = "地理位置精度")]
        public string Precision { get; set; }
        /// <summary>
        /// 卡券ID
        /// </summary>		
        [DataMember(Name = "CardId")]
        [Display(Name = "卡券ID")]
        public string CardId { get; set; }
        /// <summary>
        /// 赠送方账号（一个OpenID），"IsGiveByFriend”为1时填写该参数。
        /// </summary>		
        [DataMember(Name = "FriendUserName")]
        [Display(Name = "赠送方账号")]
        public string FriendUserName { get; set; }
        /// <summary>
        /// 是否为转赠，1代表是，0代表否
        /// </summary>		
        [DataMember(Name = "IsGiveByFriend")]
        [Display(Name = "是否为转赠")]
        public int IsGiveByFriend { get; set; }
        /// <summary>
        /// code序列号。自定义code及非自定义code的卡券被领取后都支持事件推送
        /// </summary>		
        [DataMember(Name = "UserCardCode")]
        [Display(Name = "code序列号")]
        public string UserCardCode { get; set; }
        /// <summary>
        /// 转赠前的code序列号
        /// </summary>		
        [DataMember(Name = "OldUserCardCode")]
        [Display(Name = "转赠前的code序列号")]
        public string OldUserCardCode { get; set; }
        /// <summary>
        /// 领取场景值，用于领取渠道数据统计。可在生成二维码接口及添加JS API接口中自定义该字段的整型值
        /// </summary>		
        [DataMember(Name = "OuterId")]
        [Display(Name = "领取场景值")]
        public int OuterId { get; set; }
        /// <summary>
        /// 核销来源。支持开发者统计API核销（FROM_API）、公众平台核销（FROM_MP）、卡券商户助手核销（FROM_MOBILE_HELPER）（核销员微信号）
        /// </summary>		
        [DataMember(Name = "ConsumeSource")]
        [Display(Name = "核销来源")]
        public string ConsumeSource { get; set; }
        /// <summary>
        /// 门店名称，当前卡券核销的门店名称（只有通过卡券商户助手和买单核销时才会出现）
        /// </summary>		
        [DataMember(Name = "LocationId")]
        [Display(Name = "门店名称")]
        public string LocationId { get; set; }
        /// <summary>
        /// 核销该卡券核销员的openid（只有通过卡券商户助手核销时才会出现）
        /// </summary>		
        [DataMember(Name = "StaffOpenId")]
        [Display(Name = "核销该卡券核销员的openid")]
        public string StaffOpenId { get; set; }
        /// <summary>
        /// 微信支付交易订单号（只有使用买单功能核销的卡券才会出现）
        /// </summary>		
        [DataMember(Name = "TransId")]
        [Display(Name = "微信支付交易订单号")]
        public string TransId { get; set; }
        /// <summary>
        /// 实付金额，单位为分
        /// </summary>		
        [DataMember(Name = "Fee")]
        [Display(Name = "实付金额")]
        public string Fee { get; set; }
        /// <summary>
        /// 应付金额，单位为分
        /// </summary>		
        [DataMember(Name = "OriginalFee")]
        [Display(Name = "应付金额")]
        public string OriginalFee { get; set; }
        /// <summary>
        /// 变动的积分值
        /// </summary>		
        [DataMember(Name = "ModifyBonus")]
        [Display(Name = "变动的积分值")]
        public int ModifyBonus { get; set; }
        /// <summary>
        /// 变动的余额值
        /// </summary>		
        [DataMember(Name = "ModifyBalance")]
        [Display(Name = "变动的余额值")]
        public int ModifyBalance { get; set; }
        /// <summary>
        /// 报警详细信息
        /// </summary>		
        [DataMember(Name = "Detail")]
        [Display(Name = "报警详细信息")]
        public string Detail { get; set; }
        /// <summary>
        /// 本次推送对应的订单号
        /// </summary>		
        [DataMember(Name = "OrderId")]
        [Display(Name = "本次推送对应的订单号")]
        public string OrderId { get; set; }
        /// <summary>
        /// 本次订单号的状态/发送状态为用户拒绝接收
        /// </summary>		
        [DataMember(Name = "Status")]
        [Display(Name = "本次订单号的状态/发送状态为用户拒绝接收")]
        public string Status { get; set; }
        /// <summary>
        /// 购买券点时，实际支付成功的时间
        /// </summary>		
        [DataMember(Name = "PayFinishTime")]
        [Display(Name = "购买券点时，实际支付成功的时间")]
        public int PayFinishTime { get; set; }
        /// <summary>
        /// 支付方式，一般为微信支付充值
        /// </summary>		
        [DataMember(Name = "Desc")]
        [Display(Name = "支付方式，一般为微信支付充值")]
        public string Desc { get; set; }
        /// <summary>
        /// 剩余免费券点数量
        /// </summary>		
        [DataMember(Name = "FreeCoinCount")]
        [Display(Name = "剩余免费券点数量")]
        public string FreeCoinCount { get; set; }
        /// <summary>
        /// 剩余付费券点数量
        /// </summary>		
        [DataMember(Name = "PayCoinCount")]
        [Display(Name = "剩余付费券点数量")]
        public string PayCoinCount { get; set; }
        /// <summary>
        /// 本次变动的免费券点数量
        /// </summary>		
        [DataMember(Name = "RefundFreeCoinCount")]
        [Display(Name = "本次变动的免费券点数量")]
        public string RefundFreeCoinCount { get; set; }
        /// <summary>
        /// 本次变动的付费券点数量
        /// </summary>		
        [DataMember(Name = "RefundPayCoinCount")]
        [Display(Name = "本次变动的付费券点数量")]
        public string RefundPayCoinCount { get; set; }
        /// <summary>
        /// 所要拉取的订单类型
        /// ORDER_TYPE_SYS_ADD 平台赠送券点 
        /// ORDER_TYPE_WXPAY 充值券点 
        /// ORDER_TYPE_REFUND 库存未使用回退券点 
        /// ORDER_TYPE_REDUCE 券点兑换库存 
        /// ORDER_TYPE_SYS_REDUCE 平台扣减
        /// </summary>		
        [DataMember(Name = "OrderType")]
        [Display(Name = "所要拉取的订单类型")]
        public string OrderType { get; set; }
        /// <summary>
        /// 系统备注，说明此次变动的缘由
        /// </summary>		
        [DataMember(Name = "Memo")]
        [Display(Name = "系统备注")]
        public string Memo { get; set; }
        /// <summary>
        /// 所开发票的详情
        /// </summary>		
        [DataMember(Name = "ReceiptInfo")]
        [Display(Name = "所开发票的详情")]
        public string ReceiptInfo { get; set; }
        /// <summary>
        /// 认证失败发生时间 (整形)，时间戳
        /// </summary>		
        [DataMember(Name = "FailTime")]
        [Display(Name = "认证失败发生时间 (整形)，时间戳")]
        public int FailTime { get; set; }
        /// <summary>
        /// 认证失败的原因
        /// </summary>		
        [DataMember(Name = "FailReason")]
        [Display(Name = "认证失败的原因")]
        public int FailReason { get; set; }
        /// <summary>
        /// 有效期 (整形)，指的是时间戳，将于该时间戳认证过期
        /// </summary>		
        [DataMember(Name = "ExpiredTime")]
        [Display(Name = "有效期 (整形)")]
        public int ExpiredTime { get; set; }
        /// <summary>
        /// 消息id
        /// </summary>		
        [DataMember(Name = "MsgId")]
        [Display(Name = "消息id")]
        public int MsgId { get; set; }

        #endregion

        #region 扩展属性
        #endregion
    }
}
